//# publish
module 0x42::t {

    struct Ints has key, drop {
        f8: u8,
        f16: u16,
        f32: u32,
        f64: u64,
        f128: u128,
        f256: u256,
    }

    public fun new(): Ints {
        Ints {
            f8:   0x80,
            f16:  0x8000,
            f32:  0x80000000,
            f64:  0x8000000000000000,
            f128: 0x80000000000000000000000000000000,
            f256: 0x8000000000000000000000000000000000000000000000000000000000000000,
        }
    }

    public fun check(ints: Ints) {
        let Ints { f8, f16, f32, f64, f128, f256} = ints;
        assert!(f8   == 0x80u8, 0);
        assert!(f16  == 0x8000u16, 0);
        assert!(f32  == 0x80000000u32, 0);
        assert!(f64  == 0x8000000000000000u64, 0);
        assert!(f128 == 0x80000000000000000000000000000000u128, 0);
        assert!(f256 == 0x8000000000000000000000000000000000000000000000000000000000000000u256, 0);

    }

}

//# run 0x42::t::new

//# run 0x42::t::check --args struct(0x80u8,0x8000u16,0x80000000u32,0x8000000000000000u64,0x80000000000000000000000000000000u128,0x8000000000000000000000000000000000000000000000000000000000000000u256)
